package cn.tedu.eb_film.mapper;

import cn.tedu.eb_film.pojo.entity.Cinema;
import cn.tedu.eb_film.pojo.entity.CinemaList;
import cn.tedu.eb_film.pojo.vo.CinemaStandardVO;
import cn.tedu.eb_film.pojo.vo.SearchCinemaVo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 电影院Mapper文件
 *
 * @author ライナー・ロンテ
 * @since 2023/3/14 18:56
 */
@Mapper
public interface CinemaMapper {

    /**
     * 添加一条数据
     *
     * @param cinema 添加的数据实体
     * @return 有反馈的条数
     */
    int insert(Cinema cinema);

    /**
     * 批量添加数据
     *
     * @param cinemas 添加的数据实体集合
     * @return 有反馈的条数
     */
    int inserts(List<Cinema> cinemas);

    /**
     * 根据id删除数据
     *
     * @param id 需要删除的数据
     * @return 有反馈的条数
     */
    int deleteById(Long id);

    /**
     * 根据id集合批量删除数据
     *
     * @param ids 需要删除的id集合
     * @return 有反馈的条数
     */
    int deleteByIds(List<Long> ids);

    /**
     * 统计总数量
     *
     * @return 表里面的总数量
     */
    Long count();

    /**
     * 统计分页数据
     *
     * @return  分页查询后的数据
     */
    Long countForPage(String name,String address);

    /**
     * 根据id查询电影院标准实体
     *
     * @param id 查询的Id
     * @return 电影院标准对象实体
     */
    CinemaStandardVO getStandardVOById(Long id);

    /**
     * 通过地址获得电影院实体
     *
     * @param address 电影院地址
     * @return 实体
     */
    CinemaStandardVO getStandardVOByAddress(String address);

    /**
     * 根据地址和名称修改
     *
     * @param address 地址
     * @param name    电影院名称
     * @return 查出来的数据
     */
    CinemaStandardVO getStandardVOByAddressAndName(String address, String name);

    /**
     * 查询电影院列表
     *
     * @return List<CinemaList>
     */
    List<CinemaList> list();

    /**
     * 分页查询list电影院实体视图
     *
     * @return pageList<CinemaList>
     */
    List<CinemaList> pageList(Integer page, Integer pagesize, String name, String address);

    /**
     * 修改数据
     *
     * @param cinema 修改后的数据
     * @return 反应的条数
     */
    int update(Cinema cinema);

    List<SearchCinemaVo> getCinema(String name);

    List<SearchCinemaVo> loadCinema();

    List<SearchCinemaVo> getCinemaByAddress(String address);

    List<SearchCinemaVo> Imax();

    List<SearchCinemaVo> normal();
}
